﻿//【进阶】33.模拟实现map、set
//【头文件包含】
//C++的主要头文件
#include<iostream>//c++的输入输出流
using namespace std;
#include<string>
#include<vector>
#include<list>
#include<set>
#include<map>
//C的主要头文件
//#include<stdio.h>
//#include<stdlib.h>
//#include<assert.h>
//#include<string.h> 
#include"RBTree.hpp"
#include"MySet.h"
#include"MyMap.h"



//【命名空间】

//【结构体声明】【类声明】
//【函数声明】
void Test1();void Test2();void Test3();


//【主函数】
int main()
{
	Test1();
	Test2();
	Test3();


	cout << "****主函数结束****" << endl;
	return 0;
}

//【函数定义】


/*测试用例*/void Test1()
{
	cout << "****测试用例开始****"<< endl;
	TestRBTree1();
	cout << "****测试用例结束****" << endl << endl;
}

/*测试用例*/void Test2()
{
	cout << "****测试用例开始****" << endl;
	myspace::TestMyMap1();
	myspace::TestMySet1();
	cout << "****测试用例结束****" << endl<<endl;
}

/*测试用例*/void Test3()
{
	cout << "****测试用例开始****" << endl;

	cout << "****测试用例结束****" << endl << endl;
}




//【笔记】
//【进阶】33.模拟实现map、set
	// RBTree
		//插入删除都是先执行搜索二叉树的基础操作，之后分情况判断1.根节点2.非根节点：有父节点且父节点不为黑，执行换色或旋转在换色3.最后再恢复根为黑色
	//红黑树和AVL树相比在经常增删的结构中，性能更优，因为它不追求完全的平衡，只需保障最长路径不超最短路径2倍，所以相应的旋转次数变少// 不过高度会相对AVL树高一些 
	//利用红黑树模拟map、set  
	// 在stl中map和set底层都是利用同一种红黑树来实现的（复用减少代码冗余），set利用一个









